import scrapy
from caipiao.items import CaipiaoItem

class ShaungseqiuSpider(scrapy.Spider):
    name = "shaungseqiu"   #爬虫名字
    allowed_domains = ["datachart.500.com"]  #允许的域名
    start_urls = ["https://datachart.500.com/ssq/"]  #第一次爬取的路径地址

    # parse方法进行页面解析
    def parse(self, response):
        # 可以直接调用response.xpath对页面进行解析
        # 获取页面上id属性为tdata下的所有tr标签
        trs=response.xpath("//*[@id='tdata']/tr")
        # 对所有的tr进行遍历
        for tr in trs:
            # 因为每隔五行会有一条横线中 没有数据
            # 判断，若tr的class属性为tdbck的话，则终止本地循环
            if tr.xpath("./@class").extract_first()=="tdbck":
                continue
            #     ./表示当前的元素即tr标记，向下找到align属性为center的td标记中的文本内容，为期号的值
            # 直接使用xpath方法进行解析时，返回值默认为选择器，将选择器中的内容提取出来可以调用extract方法
            # 若解析出来的内容为一组，则调用extract方法，若解析出来的元素内容为1个，则调用extract_first()
            qihao=tr.xpath("./td[@align='center']/text()").extract_first()
            #     ./表示当前的元素即tr标记，向下找到class属性为chartBall01的td标记中的文本内容，为红球的值
            red_boll=tr.xpath("./td[@class='chartBall01']/text()").extract()
            #     ./表示当前的元素即tr标记，向下找到class属性为chartBall02的td标记中的文本内容，为蓝球的值
            blue_boll = tr.xpath("./td[@class='chartBall02']/text()").extract_first()
            # 将数据保存在item中，要现在items.py文件中进行定义要使用的实体的属性值
            caipiao=CaipiaoItem()
            caipiao["qihao"]=qihao
            caipiao["red_boll"]=red_boll
            caipiao["blue_boll"] = blue_boll
            # 通过yield将实体返回
            yield caipiao
        pass
